﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace LI4
{
    public partial class regCandidato : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Data.Localidade localidade = new Data.Localidade();
            Data.Distrito distrito = new Data.Distrito();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            foreach (Business.Distrito dist in Program.distritos)
                lstdistrito.Items.Add(dist.Nome);


            int codDistr = 0;
            string distr = lstdistrito.Text;
            foreach (Business.Distrito dist in Program.distritos)
                if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.CodDistrito == codDistr) lstlocalidade.Items.Add(local.Nome);
            }
            if (lstlocalidade.Items.Count > 0) lstlocalidade.SelectedIndex = 0;

            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            
            string user = username.Text;
            string pass = password.Text;
            string pass1 = password1.Text;

            string nome_ = nome.Text;
            string email_ = email.Text;
            int telefonep = 1;
            int telefone_ = 0;
            int cod = 1;
            string morada_ = morada.Text;
            string codpostalt1 = codpostal.Text;
            string codpostalt2 = codpostal1.Text;
            string codpostal_ = codpostalt1 + codpostalt2;
            int codLocalidade_ = getCodLocalidade(lstlocalidade.SelectedItem.Text.ToString());
            string curr_ = "";


            try
            {
                telefone_ = Int32.Parse(telefone.Text);
            }
            catch
            {
                telefonep = 0;
            }

            try
            {
                int codP = Int32.Parse(codpostal_);
            }
            catch
            {
                cod = 0;
            }
            Regex nomereg = new Regex(@"[a-zA-Z0-9àáéóúãâÂÁÀÉêÊÍÓçÇÃÓõÕôÚ.,:-_]+([ a-zA-Z0-9àáéêÊóúãâÂÁÀÉÍÓçÇÃÓÚõÕô.,:-_]+)*");
            Regex mailReg = new Regex(@"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]+");
            if (!nomereg.IsMatch(nome_)) Response.Write("<script>alert('Campo Nome inválido')</script>");
            else if (pass != pass1) Response.Write("<script>alert('Passwords não são iguais')</script>");
            else if (!mailReg.IsMatch(email_)) Response.Write("<script>alert('Campo email inválido')</script>");
            else if (!nomereg.IsMatch(morada_)) Response.Write("<script>alert('Campo Rua inválido')</script>");
            else if (cod==0) Response.Write("<script>alert('Campo Código-Postal inválido')</script>");
            else if (!nomereg.IsMatch(user)) Response.Write("<script>alert('Campo username inválido')</script>");
            else if (!nomereg.IsMatch(pass)) Response.Write("<script>alert('Campo password inválido')</script>");
            else if (telefonep == 0) Response.Write("<script>alert('Campo Telefone inválido')</script>");

            else
            {


                //Registar o Login do novo candidato
                Business.Login novoUser = new Business.Login(user, pass, 3, 20);
                /*Data.Login login = new Data.Login();
                login.inserir(novoUser);*/

                //Registar as infos pessoais na base de dados
                Business.Localidade local = new Business.Localidade();
                foreach(Business.Localidade loc in Program.localidades)
                    if(loc.Nome.Equals(lstlocalidade.SelectedItem.Text)) local = loc;


                Business.Candidato novoCand = new LI4.Business.Candidato(nome_, morada_, codpostal_, email_, "", 20, telefone_, local, novoUser);

                int success = Business.GerirCandidatos.inserirCandidatoBD(novoCand);

                if (success == Business.Login.BADLOGIN)
                    Response.Write("<script>alert('Username já existente')</script>");
                else
                {
                    Response.Write("<script>alert('Candidato Inserido no sistema')</script>");

                }

            }
        }

        protected void lstlocalidade_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void lstdistrito_SelectedIndexChanged(object sender, EventArgs e)
        {


        }

        protected int getCodLocalidade(String nomeLocalidade)
        {
            foreach (Business.Localidade local in Program.localidades)
                if (local.Nome.Equals(nomeLocalidade)) return local.CodLocalidade;
            return 0;
        }
    }
}
